<?php
class Empleados extends CI_Controller {
	
	function index()
	{
		$this->load->view('module_empleados');
	}
	
	function load_content($content, $id=null){
		switch ($content) {
			case 'creacion':								
				$this->load->view('employees/crear', $this->load_data());
				break;
			case 'consulta':
				$data['tabla_consulta_empleados'] = $this->search();
				$this->load->view('employees/consultar', $data);
				break;
			case 'modificacion':
				$data = $this->load_data();
				$data['userVO'] = $this->findById($id);
				$this->load->view('employees/modificar', $data);
				break;
		}
	}
	
	public function create(){
		$this->load->helper(array('form','url'));
		$this->load->model('vo/UserVO');
		$this->load->model('dao/UserDAO');
		
		$data = $this->load_data();
		
		$this->UserVO->cedula 			= $this->input->post('cedula');
		$this->UserVO->nombres 			= $this->input->post('nombres');
		$this->UserVO->apellidos		= $this->input->post('apellidos');
		$this->UserVO->cargo			= $this->input->post('cargo');
		$this->UserVO->dependencias		= $this->input->post('dependencias');
		$this->UserVO->usuario 			= $this->input->post('usuario');
		$this->UserVO->contrasena 		= $this->input->post('contrasena');
		$this->UserVO->role	 			= $this->input->post('role');
		$this->UserVO->email 			= $this->input->post('email');
		
		$create = true;
		
		if ($this->UserVO->cedula == ''){
			$data['cedula_validation_msg'] = " * Debe ingresar una cedula valida";
			$create = false;
		}
		if ($this->UserVO->nombres == ''){
			$data['nombres_validation_msg'] = " * Debe ingresar los nombres validos";
			$create = false;
		}
		if ($this->UserVO->apellidos == ''){
			$data['apellidos_validation_msg'] = " * Debe ingresar apellidos validos";
			$create = false;
		}
		if ($this->UserVO->usuario == ''){
			$data['usuario_validation_msg'] = " * Debe ingresar un usuario valido";
			$create = false;
		}
		if ($this->UserVO->contrasena == ''){
			$data['contrasena_validation_msg'] = " * Debe ingresar una contrase&ntilde;a valida";
			$create = false;
		} else {
			$this->UserVO->contrasena = md5($this->UserVO->contrasena);
		}
		/*
			if ($this->UserVO->email == ''){
				$data['email_validation_msg'] = " * Debe ingresar un correo valido";
				$create = false;
		}			
		*/
		
		if ($create){
			if ($this->UserDAO->create($this->UserVO))
				$data['crear_transaction_msg'] = 'El empleado ha sido creado correctamente.'; 
			else
				$data['crear_transaction_msg'] = 'Se ha generado un error al crear el empleado';
		}
		$this->load->view('employees/crear', $data);		
	}
	
	private function search(){
		$this->load->model('vo/UserVO');
		$this->load->model('dao/UserDAO');
		
		$empleados = $this->UserDAO->search();
		
		$tabla_empleados = "<table id='darktable'>
				            <thead>
				            	<tr>
				            		<th>Identificaci&oacute;n</th>
				            		<th>Nombres</th>
				            		<th>Apellidos</th>
									<th>Cargo</th>	            		
				            	</tr>
				            </thead>
				            <tbody>";
		foreach ($empleados->result() as $empleado){
			$tabla_empleados .= "<tr onclick=\"document.location.href = 'http://localhost/Sistema360/index.php/empleados/load_content/modificacion/".$empleado->id_usuario."'\">
				            		<td>".$empleado->identificacion."</td>
				            		<td>".$empleado->nombres."</td>
				            		<td>".$empleado->apellidos."</td>
				            		<td>".$this->homologarCargo($empleado->id_cargo_usuario)."</td>
				            	</tr>";
		}
		$tabla_empleados .= "</tbody>
	            		</table>";
		
		return $tabla_empleados;
	}
	
	private function homologarCargo($id_cargo){
		$descrpcargo = "";
		if ($id_cargo!=-1){
			$cargos = $this->config->item('cargos');
			$descrpcargo = $cargos[$id_cargo];
		} else 
			$descrpcargo = "Administrador de Sistema";
		return $descrpcargo;
	}
	
	private function findById($id){
		$this->load->model('vo/UserVO');
		$this->load->model('dao/UserDAO');
		
		$this->UserVO = $this->UserDAO->findById($id);
	
		return $this->UserVO;
	}
	
	public function update(){
		$this->load->helper(array('form','url'));
		$this->load->model('vo/UserVO');
		$this->load->model('dao/UserDAO');
	
		$data = $this->load_data();
	
		$this->UserVO->id 			= $this->input->post('id_usuario');
		$this->UserVO->cedula 		= $this->input->post('cedula');
		$this->UserVO->nombres 		= $this->input->post('nombres');
		$this->UserVO->apellidos	= $this->input->post('apellidos');
		$this->UserVO->cargo		= $this->input->post('cargo');
		$this->UserVO->usuario 		= $this->input->post('usuario');
		$this->UserVO->contrasena 	= $this->input->post('contrasena');
		$this->UserVO->role	 		= $this->input->post('role');
		$this->UserVO->email 		= $this->input->post('email');
	
		$update = true;		
		
		if ($this->UserVO->cedula == ''){
			$data['cedula_validation_msg'] = " * Debe ingresar una cedula valida";
			$update = false;
		}
		if ($this->UserVO->nombres == ''){
			$data['nombres_validation_msg'] = " * Debe ingresar los nombres validos";
			$update = false;
		}
		if ($this->UserVO->apellidos == ''){
			$data['apellidos_validation_msg'] = " * Debe ingresar apellidos validos";
			$update = false;
		}
		if ($this->UserVO->usuario == ''){
			$data['usuario_validation_msg'] = " * Debe ingresar un usuario valido";
			$update = false;
		}
		if ($this->UserVO->contrasena == ''){
			$data['contrasena_validation_msg'] = " * Debe ingresar una contrase&ntilde;a valida";
			$update = false;
		} else {
			$this->UserVO->contrasena = md5($this->UserVO->contrasena);
		}
		if ($this->UserVO->email == ''){
			$data['email_validation_msg'] = " * Debe ingresar un correo valido";
			$update = false;
		}
	
		if ($update){
			if ($this->UserDAO->update($this->UserVO)){
				$data['update_transaction_msg'] = 'El empleado ha sido actualizado correctamente.';
				$data['tabla_consulta_empleados'] = $this->search();
				$this->load->view('employees/consultar', $data);
			} else {
				$data['update_transaction_msg'] = 'Se ha generado un error al actualizar el empleado';
				$data['userVO'] = $this->findById($this->UserVO->id);
				$this->load->view('employees/modificar', $data);
			}
		} else {
			$data['userVO'] = $this->findById($this->UserVO->id);
			$this->load->view('employees/modificar', $data);
		}
	}
	
	public function delete($id_usuario){
		$this->load->helper(array('form','url'));
		$this->load->model('dao/UserDAO');
		
		if ($this->UserDAO->delete($id_usuario)){
			$data['tabla_consulta_empleados'] = $this->search();
			$this->load->view('employees/consultar', $data);
		}		
		
	}

	private function load_data(){
		$data['cargos'] = $this->config->item('cargos');
		$data['dependencias'] = $this->config->item('dependencias');
		$data['roles'] = $this->config->item('roles');
		
		$data['cedula_validation_msg'] = '';
		$data['nombres_validation_msg'] = '';
		$data['apellidos_validation_msg'] = '';
		$data['cargo_validation_msg'] = '';
		$data['dependencias_validation_msg'] = '';		
		$data['usuario_validation_msg'] = '';
		$data['contrasena_validation_msg'] = '';
		$data['role_validation_msg'] = '';
		$data['email_validation_msg'] = '';
		
		$data['crear_transaction_msg'] = '';
		$data['update_transaction_msg'] = '';
		
		return $data;
	}
	
}
?>